package reflect;

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

/**
 * 自动调用Person类中所有无参方法
 *
 * Method的方法:
 * int getParameterCount()
 * 返回当前Method表示的方法的参数个数
 *
 */
public class Test {
    public static void main(String[] args) throws Exception {
        Class cls = Class.forName("reflect.Person");
        Object obj = cls.newInstance();

        Method[] methods = cls.getDeclaredMethods();
        for(Method method : methods){
           //判断是否为无参且公开的方法
           if(method.getParameterCount()==0             //没有参数的
                   &&
              method.getModifiers() == Modifier.PUBLIC  //公开的
                   &&
              method.getName().contains("a")            //名字含有字母"a"
           ){
               System.out.println("自动调用方法:"+method.getName()+"()");
               method.invoke(obj);
           }
        }
    }
}
